package hangxingliu.java.yddictapi;

import hangxingliu.java.yddictapi.debug.Console;

/**
 * 有道查词或详细解析或获得读音等等时出现了错误,将保存到这里
 * 
 * @author VoyageLiu
 * @version 2.0
 */
public final class YdErrLog {

	/**
	 * 通过控制台输出错误信息时的输出前缀
	 */
	private final static String CONSOLE_OUTPUT_PREFIX = "程序错误记录:";
	
	/**
	 * 错误信息数组的长度
	 */
	private final static int errRecordLength = 1024;
	
	/**
	 * 错误信息数组
	 */
	private static String[] errRecord = new String[errRecordLength];

	/**
	 * 最后一个错误信息在数组中的位置
	 */
	private static int errLatest = -1;

	/**
	 * 添加一条错误信息
	 * @param msg 错误信息
	 */
	public static void err(String msg){
		errLatest = (errLatest + 1) % errRecordLength;
		errRecord[errLatest] = msg;
		
		//控制台输出信息
		Console.output(CONSOLE_OUTPUT_PREFIX.concat(msg));
	}
	
	/**
	 * @return 获得最新的错误信息
	 */
	public static String getLatestError(){
		//排除没有错误信息
		return errLatest != -1?errRecord[errLatest]:"";
	}
	
	/**
	 * @return 获得错误信息数组
	 */
	public static String[] getErrorArray(){
		return errRecord;
	}
	
	/**
	 * @return 获得最新的错误信息在错误信息数组中的位置
	 */
	public static int getLatestErrorIndex(){
		return errLatest;
	}
}
